查看: 16133|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    8 u1 @# P% Z- a. t& o
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig6 e: Q- M7 }2 |. I0 A
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
$ U( z8 Y; b" H6 ^) t/ L8 Vusage: himr <address> <value>. sample: himr 0x80040000 0x0, x6 E9 h* p' o9 @  j7 @
1 a2 U) P! n6 v7 n
" J" [; R1 O; v% a3 W; G4 ^
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
; X& u7 {# M# e4 [/ z8 Q7 Q4 H  T* d  L2 m/ c
补充内容 (2012-3-8 09:42):
6 J8 E+ T& ?" e. Zhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
' p8 [( }" x& ?7 t2 r: A这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。5 y' D+ ]* b; |

0 M3 U0 A9 T, E  Uhimr <address> <value>. sample: himr 0x80040000 0x0$ w- q( k: h, d' _. \% L
, z# E% Z! b' b3 G7 b
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。5 C9 p! T1 Y& v) a. Y
himr 0x80040000 0x00
7 z- a9 t( U: A5 ]* X. phimr 0x80040001 0x111 A. D& n0 u/ B( w: [
himr 0x80040002 0x22
+ g$ }/ j* i7 bhimr 0x80040003 0x33
2 I9 q$ U% p' g5 l- A9 Q6 W. ihimr 0x80040004 0x449 J, F" O) \" i% n$ W2 k
himr 0x80040005 0x55
7 T3 Y; z( Y+ R( U' e+ j" `
& l6 ~: O" V# u; O5 \5 R3 [5 LSN也是类似。
+ v) z7 V% W. Z6 }. U
6 ]) A2 G, x/ ^# P4 u现在主要是,谁告诉我们MAC和SN的地址?- G9 c7 V9 _$ r, D
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ) r* ^6 L/ L7 k, m- A3 o! `
一直想找到运程修改MAC和SN的办法,苦于无解啊

  c  O$ V) X7 x1 b; f( E" w源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
  y1 P7 O. Q. \9 ~7 F
( J+ ]- _) |& r3 u8 W修改的代码早有了。到今天不会编译。
( x' e& A( p3 {/ m: a) J7 i需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>; M, K. t, w  H6 S# y
  2. #include <malloc.h>
    " B0 j& O! l' w+ R; s4 z
  3. #include <sys/types.h>
    , t9 t4 {. Q; U1 a0 q
  4. #include <sys/stat.h>
    8 s: k' [& X5 K; K2 h8 A$ [% M
  5. #include <sys/ioctl.h>, c$ s9 P) {9 h* _. ^
  6. #include <stdio.h>5 `3 O% C; E- B6 c, c8 [. ?& M) c
  7. #include <string.h>6 m, a% A2 y/ L! G3 U& Y
  8. : o: x" Q$ M( {: m, @2 K/ u" z
  9. typedef struct {
    ( M' _1 p3 Y0 d
  10.         unsigned int        e2prom_cmd_sub_addr;; J7 Y$ m1 P  }8 H9 s: m* Y8 V# `
  11.         unsigned int        sub_addr_count;" o" g8 |! x/ k- i
  12.         unsigned char*        e2prom_cmd_data;( f/ X$ P- m* a7 G7 d
  13.         unsigned int        data_count;3 A1 ?) f9 \7 E
  14. } e2prom_s_cmd;0 t: O8 t! S3 H- c) U

  15. 2 P1 ^5 I" w' M) I
  16. #define E2PROM_CMD_READ 1
    + y0 _; V! Q/ `* ~2 E% p* {* p+ U2 R
  17. #define E2PROM_CMD_WRITE 2: R1 Z7 {  M6 b4 R1 a8 J& b  u
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"; c5 o. z/ w, t# J" |; ?

  19. ) R$ E5 B5 X+ c+ u+ O
  20. static int readparam(unsigned char *mac, unsigned char *stbid)& k2 c( ?7 F9 X% e6 U
  21. {" n  q' b* A. c4 q) b9 a
  22.         int fd, ret;
    . g3 G; \$ K/ Y- V6 t- \, p$ k
  23.         e2prom_s_cmd arg;& R5 o( k6 c: E+ y6 B& w4 `
  24.         unsigned char buf[0x18];
    4 w) M! ^4 y% U8 Z# P# Y2 A9 z  |
  25. 8 N/ M' I% R& P, l
  26.         fd = open(E2PROM_DEVICE, O_RDWR);- s& z( V3 U  a2 d4 ~( Y( i
  27.         if (fd  < 0) {
    " q& N( W: S: w/ U5 I
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);2 x8 L$ N! G$ f6 X
  29.                 return -1;5 k* H! B3 ?. x  p$ d7 D' Z3 k2 ?
  30.         }( ?5 w: r8 H; J  f* _! q
  31.         arg.sub_addr_count      = 2;! |  D9 V% O: A3 n
  32.         arg.data_count          = 0x18;( @1 P2 A- o& W3 x  r5 l6 m
  33.         arg.e2prom_cmd_sub_addr = 0x290;7 Y' v' n: W. q, u8 u: ]4 k
  34.         arg.e2prom_cmd_data     = buf;( v9 A% Z1 G: M* B0 ~1 N7 [; k
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);% v. D: X* T) |3 M: L3 R/ s" l5 f( X7 X
  36.         if (ret != 0) {* ?' I$ Z+ `0 g
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);! {: m& s! V, P) {* j
  38.                 return -1;. {$ I# H: F7 c3 N- ~- w" e5 B
  39.         }
    2 }8 g4 m2 F  Q/ S6 R: ~( d
  40.         memcpy(mac, buf, 6);
    , C* d4 c, S% K8 U; J
  41.         memcpy(stbid, &buf[6], 18);
    ' Y3 `' d6 c: v9 _7 D
  42.         stbid[18] = '\0';4 {+ H: h# X: \5 u

  43. 1 o; _: X5 d8 S* H* n1 }: G
  44.         return 0;
    ) M% _% r* D* ]0 _/ N" i4 H( _
  45. }
    ; z1 p: D, n  @) }1 O* k/ r

  46. 6 F4 J3 m9 X$ L; `
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ; J1 J8 `0 C2 b" h0 F
  48. {
    ! k, u$ q! O2 O! j9 P
  49.         int fd, ret;
    ' _9 g. f7 X" m6 r
  50.         e2prom_s_cmd arg;$ G* }4 j5 h% V( R
  51.         unsigned char buf[0x18];
    4 Z* i4 `) _; E8 o( R# x

  52. : J  U/ v  }  S9 ]% V0 [1 m5 }# z
  53.         memcpy(buf, mac, 6);
    4 O& {# i5 W& ^2 M
  54.         memcpy(&buf[6], stbid, 18);4 M! r* u8 E" A. s+ z2 j
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    / h* H, @& \( k) b3 O  ]5 X
  56.         if (fd  < 0) {  K8 [# ~! m5 t
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    3 l/ K9 m5 m- i# g% V" s1 d# Q1 m, X4 ]
  58.                 return -1;+ b7 X) L9 ?: K) y7 E
  59.         }" ]& G: v) Q* F6 f' ]
  60.         arg.sub_addr_count      = 2;
    , Z& a! e: }, |  R1 M. U; R
  61.         arg.data_count          = 0x18;
    $ ?9 y" }- p' D6 t" l) J4 t
  62.         arg.e2prom_cmd_sub_addr = 0x290;8 P! S) Z% O/ n
  63.         arg.e2prom_cmd_data     = buf;
    / h7 L, f% X$ G
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    $ {2 E% r2 C2 D
  65.         if (ret != 0) {
    7 n! A; Z4 u$ u
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ( m6 J8 N0 G, \% H$ g
  67.                 return -1;! `1 }2 F" X# g) B
  68.         }2 G6 t9 y: A' [

  69. . n4 `! ~8 o0 B  ^" L* y
  70.         return 0;
    3 f5 q: @; r) z1 x
  71. }) ?& h0 T/ r4 O* ]: c# U! O6 Y
  72.   ?+ O- v+ I( q3 T1 F9 Q
  73. int main()
    ) Q) G4 \, U4 Q5 f& K& Y
  74. {
    6 O: D3 |$ b) m% e8 e3 Y  `
  75.         char c;
    " W, y. P8 l4 ^8 f0 f! ]6 a
  76.         int i, macs[6];6 [! B5 H2 X+ K, v# N
  77.         unsigned char mac[6];
    ( O" V: M# Y3 H8 E8 q: O. `
  78.         unsigned char stbid[256];
    7 D# I7 ~* \' I  W& p6 ~0 F& t
  79. + W6 E1 @# u$ A- Q+ ?- ~
  80.         if (readparam(mac, stbid) < 0)
    8 N, X; D) N+ u0 j
  81.                 return 1;
    8 L! Y9 b/ w( t5 D6 z  ^1 g
  82. 6 s- S* ]' H$ N! K
  83.         printf("Current parameters: \n");8 ?5 R, L$ g" o; y
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);% r  C) j* g& w4 d9 }+ m5 d
  85.         printf("  STBID: %s\n", stbid);
    9 u: s/ y; X% q' B$ y5 C# c
  86.         & {) k7 u! e: t/ U# T
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    / ^' M- L6 C! o- m7 b& a$ C% X& F. m
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {" `7 W# l; w, x& R
  89.                 printf("Input MAC error\n");
    4 T6 O4 r' W2 R5 h8 h5 c, ?/ H2 ?' G" D
  90.                 return 1;
    % E; M- R- f3 U7 \' f
  91.         }
    * F$ S. r( D8 P$ q2 D8 i$ q" A
  92.         for (i=0; i<6; i++)mac[i] = macs[i];, h, K- S5 t% z* t! [5 Z1 t
  93.         printf("\nPlease input new STBID: ");
    / c0 P7 v# C3 I$ P/ N& `
  94.         scanf("%s", stbid);9 O9 z% q2 o) Q7 {1 ?
  95.         if (strlen(stbid) != 18) {* k9 N: C$ ]4 P" p. c, y( u, x! |& P
  96.                 printf("Invalid stbid\n");
    " X2 t+ a, C9 U' b1 }; ?: X9 M8 `
  97.                 return 1;: c) s8 k( n* Z) |: J: v
  98.         }
    8 t2 C1 o' c) |* t( |
  99.         printf("\nNew parameters: \n");$ C2 G- m' a$ b% x6 X; I" w
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    " j7 u$ z( L9 M$ a1 B- P% J
  101.         printf("  STBID: %s\n", stbid);
    : C* ^# h+ O# P) x3 G; F
  102. ; E; ?4 y2 g5 ?" C  |3 |
  103.         printf("\nDo you want to change paramemters? (y/N) ");0 B0 z) U& T, _% y6 S  ]
  104.         for (;;) {
    7 f8 b" [1 o  {+ q" T
  105.                 c = getchar();6 X; p1 E7 _! Y2 J
  106.                 if (c == 'y' || c == 'Y'), _3 `: o8 x; l9 E- c( N4 Y
  107.                         break;
    3 Z8 g& K" p3 R
  108.                 if (c == 'n' || c == 'N') {
    / S" W) N- m, L/ P$ Z
  109.                         printf("\nAborted.\n");
    1 q3 r( v) \+ l; h
  110.                         return 1;. i0 n& ~3 k( r
  111.                 }
    4 |- J2 u9 p( F, |# [, W
  112.         }- y4 ^; T9 z: E# w& b6 J1 t2 O% M
  113.         if (writeparam(mac, stbid) == 0) % a- v: E" Q0 L# i. j/ a1 h' l
  114.                 printf("Parameters changed.\n");9 d# g5 S; U' L" K* }: o

  115. 7 T: _, F' B! ]
  116.         return 0;
    : |' Z1 E( H# s9 y: K% O
  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 4 `9 F8 N# Z! M% ?4 `" y
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
' Y3 I# Y; N3 e# I4 _
你用的编译命令行格式是什么?( S9 H( _) l% e1 J; v/ z
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

相关侵权、举报、投诉及建议等,请发 E-mail:yesdong@qq.com

Powered by Discuz! X5.0 Licensed © 2001-2026 Discuz! Team.44152102000001

在本版发帖QQ客服返回顶部