找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15492|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    " L& ?) A4 }( I% K
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    % y+ d/ O/ y7 ]0 G8 Q( s
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
$ v3 k& D; c. v6 `% C; u" Gusage: himr <address> <value>. sample: himr 0x80040000 0x07 g8 \; X, H0 P* C

9 Q: w' e4 A) K% v/ ?; B& M9 o  G5 ^9 }. p. e6 Y
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?6 R, o( l8 b3 v

) ^! H. e" g7 ^补充内容 (2012-3-8 09:42):
# A4 ]& b  n4 O0 D( Ghttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
! o+ b' \" Y; s1 \) x$ o5 \6 `* p: J这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
1 q. Q6 g4 R& l* C7 e- j) }1 H# w+ U! [$ D( A$ _6 |; C
himr <address> <value>. sample: himr 0x80040000 0x0
$ w* [( ]) k& f9 c
8 `2 \, F* J: P/ m' G" a- z例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
; T) P5 R9 W$ U' Y$ y7 j+ Vhimr 0x80040000 0x00) q1 ~" _, v0 k% i
himr 0x80040001 0x11# W" z0 p* M) G. A
himr 0x80040002 0x22
) m; U4 b: B$ G, Ghimr 0x80040003 0x33: q& k) n* P% t, h: U* Q. k
himr 0x80040004 0x44" i% A, s6 u$ {/ p/ o" o1 o
himr 0x80040005 0x55
7 F/ ]' g8 b! f, b7 u/ ~! d7 w1 ?1 `8 e+ ^
SN也是类似。
( Q* n' Q, X4 ?( G6 C. m
+ [0 S7 g9 u* w" a5 ?3 h- N现在主要是,谁告诉我们MAC和SN的地址?# ?; i" l; T* ~  B: G5 B. ^* X7 v8 {
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
+ I) v& Y. ~  y9 k8 g' `2 n7 x一直想找到运程修改MAC和SN的办法,苦于无解啊

, @. k! ~; }0 K$ `* d源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ! B# z1 I5 s* P( `5 f  v

+ x9 _' R0 x- K2 i: ]* ~* [修改的代码早有了。到今天不会编译。, l$ o; o  @! k" N6 p
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>8 w9 h% y. H0 n' |. }
  2. #include <malloc.h>; I9 w7 {. h7 e. S' y0 t
  3. #include <sys/types.h>
    9 V# K$ A! G, p; b# d: y/ |' S9 g) S
  4. #include <sys/stat.h>
    ) e- t* V, ?4 s; E! \; E  s& m
  5. #include <sys/ioctl.h>
    ; ^) G, ?$ R, W/ |; e
  6. #include <stdio.h>
    ' Q. o  b6 c9 b3 q# K
  7. #include <string.h>. K/ _6 O! d7 G

  8. 3 t. t8 a: v# `
  9. typedef struct {; D7 K( F7 k$ B  e  z
  10.         unsigned int        e2prom_cmd_sub_addr;2 @& U& o# F- b* a7 T
  11.         unsigned int        sub_addr_count;6 X: R6 b7 N: s# b9 _2 {' ]
  12.         unsigned char*        e2prom_cmd_data;
    " v1 K3 A! H+ o% u) D) @; v
  13.         unsigned int        data_count;1 [' V5 q% C) ?' E
  14. } e2prom_s_cmd;, w# ~% A7 \. q+ S9 D2 _
  15. 2 g2 }: X, t% I8 u
  16. #define E2PROM_CMD_READ 16 }1 ?% h; O9 D4 a3 q# i) e4 C
  17. #define E2PROM_CMD_WRITE 2
    ' _8 O( c7 V$ F  T; Q! }: F
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16", S' x. ?3 b6 K, N* G

  19. & `( Z9 {- O" p  r5 }
  20. static int readparam(unsigned char *mac, unsigned char *stbid)2 q+ x& c% \( U) I
  21. {
    2 a8 c. W4 y4 M  L; O5 P" ^. o
  22.         int fd, ret;
    " M  \( w* s) [
  23.         e2prom_s_cmd arg;
    $ m) T- B) Y6 b* U
  24.         unsigned char buf[0x18];, K$ Z- u7 h( o# Z& g6 I

  25. / b; y& C9 A+ n  d* Y' p
  26.         fd = open(E2PROM_DEVICE, O_RDWR);1 W; r6 J. p2 }* i2 u% c' l/ A
  27.         if (fd  < 0) {
    & Z. K5 j/ n* \; y3 S, i
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 r/ N/ I7 S! K
  29.                 return -1;
    ' X/ }$ o# q& x& x+ N% Z( k
  30.         }
    % N2 b' l  \& ?5 D! [8 y/ R
  31.         arg.sub_addr_count      = 2;
    % L# Q1 w2 F+ N4 e
  32.         arg.data_count          = 0x18;
    + N. M0 J+ I; X- |
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    , Q+ R7 ]' ]% D& h1 i
  34.         arg.e2prom_cmd_data     = buf;
    - J" g5 i, u: I, u1 Z% s0 k! U
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);$ C3 Y# a3 v/ N. q4 O
  36.         if (ret != 0) {
    4 n' s; w: P- z8 t
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    4 p- E2 y7 v3 Y6 f+ r( v
  38.                 return -1;* _: K( ]( M( h& ?4 H
  39.         }# B" {/ V' D4 _2 p: C. x3 Y
  40.         memcpy(mac, buf, 6);# k( V5 F! {' V+ b# j
  41.         memcpy(stbid, &buf[6], 18);( J. ?8 Y! H* ]) `
  42.         stbid[18] = '\0';
    - Z7 F* O1 u9 f$ {

  43. - Y: z6 I" |- n: M" K. `. i
  44.         return 0;
    6 t6 ^  x3 x$ s1 y* t
  45. }! o. y6 X* S! `  o& ~" x
  46. * @/ O: V8 H" Q. F  f' G. P( a
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)" W. P3 M! o' V) S& P
  48. {8 e+ ~4 {3 `# R  Q4 Z
  49.         int fd, ret;
    , P, q, y9 N' H
  50.         e2prom_s_cmd arg;1 k7 ]3 @5 A2 h4 p' b5 b
  51.         unsigned char buf[0x18];
    8 |& z+ z8 ~4 G6 R  ?# C* {
  52. 4 e' u, S# |0 e  k! N" g* ^
  53.         memcpy(buf, mac, 6);7 ]5 F7 k0 k# f0 M* G( ~
  54.         memcpy(&buf[6], stbid, 18);
    $ p: H! ~2 x$ N) }& q2 m( Y
  55.         fd = open(E2PROM_DEVICE, O_RDWR);$ {3 \/ _- q% G8 a# x( a" w% Q6 F
  56.         if (fd  < 0) {: I; z# n$ x! `
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
      z9 h1 a% [2 G
  58.                 return -1;
    2 ?7 L3 y2 j# v* [" q9 @( z& m5 B
  59.         }
    8 T8 c' j$ K) Y' K& i
  60.         arg.sub_addr_count      = 2;
    ' x- q; Q7 h, _! D4 f7 |$ o
  61.         arg.data_count          = 0x18;
    - ?& i6 N) X- ~1 f; ]  Y
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    " _! u: a9 A6 ~& e* l
  63.         arg.e2prom_cmd_data     = buf;, \2 u  {$ {. R1 i1 A/ ^
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
      A% g7 r( R0 ~8 q- J
  65.         if (ret != 0) {3 G6 _8 t, p& c1 t
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);$ c8 f% y/ c. _/ t/ ~- `
  67.                 return -1;; V7 [( o' _4 s! ^; T  k
  68.         }
    , _! E" y$ Y7 M2 s. _
  69. 4 v7 R9 v0 N/ p! R1 l
  70.         return 0;9 X( H+ O+ b+ A) \* c& e; S
  71. }) M6 _& L  B7 R1 V

  72. 1 S, v  g, l3 R% W3 s; X/ n
  73. int main()3 T, q2 k2 M8 i# o9 I* h2 [
  74. {
    1 H3 r0 ~' t. }. c; ^1 t; ?
  75.         char c;% P  L: q, E  {- {3 T' R( k
  76.         int i, macs[6];
    + d" a) P  t8 {) i
  77.         unsigned char mac[6];/ V1 P4 O3 x* i! z; N
  78.         unsigned char stbid[256];- P% `+ n7 x5 A& s) y1 Q
  79. , v0 W9 z+ c9 G# A7 M3 p
  80.         if (readparam(mac, stbid) < 0), _/ Y& w; I9 o7 A, S) t
  81.                 return 1;
    2 v+ Y' B7 k% h8 k* \& i; n- H

  82. 2 [4 }7 L  z) x/ l) j4 j, |( g
  83.         printf("Current parameters: \n");# }. |5 p6 N* S3 \
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    : D8 Y, F& _1 V1 l( E
  85.         printf("  STBID: %s\n", stbid);
    " F- y# L. I: I  h
  86.         % A" C# B* X2 w- d7 S
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");7 @0 ]% J2 l1 ~; g% f1 ?! a2 R
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {& d4 u- |. k$ ?* z+ P1 k
  89.                 printf("Input MAC error\n");" ?& L5 N7 D2 q5 ?- k+ K4 y
  90.                 return 1;+ A* B; {4 t! a- G; D! [" F
  91.         }4 A* U2 K: R, `
  92.         for (i=0; i<6; i++)mac[i] = macs[i];5 g1 T" P! h& a  S* z/ M
  93.         printf("\nPlease input new STBID: ");% B+ Y3 a0 [0 F) X- K' q2 Y6 z
  94.         scanf("%s", stbid);7 V' k/ D& q) t8 k/ u
  95.         if (strlen(stbid) != 18) {
    8 s# x( b$ T6 q: I9 n; L6 J
  96.                 printf("Invalid stbid\n");$ m. \5 l9 a! U9 ?
  97.                 return 1;+ m& J) w9 o/ m  i8 l
  98.         }
    % F3 \6 p  \/ l
  99.         printf("\nNew parameters: \n");& j8 j, f% }: X. ?
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    " E6 Q8 _* f5 {9 r+ E
  101.         printf("  STBID: %s\n", stbid);
      n* e" j$ x! N8 z8 h  @
  102. # k& z- j0 h& h' g) ~
  103.         printf("\nDo you want to change paramemters? (y/N) ");0 t+ P* H2 s" p4 b' c
  104.         for (;;) {  [% R9 F. {8 r
  105.                 c = getchar();
    3 X# K: ~/ q4 \+ k. H6 [0 ^# m+ \
  106.                 if (c == 'y' || c == 'Y')
    8 ]" A( L9 l# U# y: I+ K
  107.                         break;; ~: L/ |4 y6 o- ?
  108.                 if (c == 'n' || c == 'N') {
    / O5 {. R7 A+ {" r! u: V
  109.                         printf("\nAborted.\n");, }- n$ w) |- }' B; F+ E" }* J3 o- o* o
  110.                         return 1;
    " A# ]; `7 b. g+ u. o6 l  }
  111.                 }. [8 ^. E9 F, y) C' k
  112.         }
    1 q# F0 S1 K0 i
  113.         if (writeparam(mac, stbid) == 0) ( m  b$ i/ E* Z1 X
  114.                 printf("Parameters changed.\n");
    / h9 {, P. i& F0 ~1 _

  115. 2 c, H+ V# r& C( ^  v2 x$ t
  116.         return 0;
    # B8 v% Z* t1 U# e% @" B9 u
  117. }
复制代码
 楼主| 发表于 2012-3-23 18:24:12 | 显示全部楼层
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
发表于 2012-5-11 11:20:03 | 显示全部楼层
0522 发表于 2012-3-23 18:24 9 o, }! _# m, o- m: D
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
* H4 K3 N$ F. A3 D% Y
你用的编译命令行格式是什么?
! j" W3 \6 x$ \' c" H+ C/ I
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-2-11 07:09 , Processed in 0.023495 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表